Guideline: Setting Up Test Evironments
Relationships
Main Description

Setup requirements

The degree to which it can be established in how far the test object complies with the requirements determines whether a test environment is successful. The setup and composition of a test environment therefore depend on the aim of the test. However, a series of generic requirements with which a test environment must comply to guarantee reliable test execution can be formulated.

Representative

The test environment must have the properties (as much as possible) that are required for the planned test. This does not mean that the entire test environment must always equal the production environment. For instance, for a functional test of an interface between two applications you do not need a complete environment that matches the future production environment.

Example 1 - For the development of an application intended for eventual use on a UNIX platform, a Windows-based platform was used as the test environment for the system test. The assumption was that the functionality would not be affected by the platform difference. A UNIX-based test environment was used for the UAT and PAT.

Manageable

A manageable environment is required to test the test object under the same conditions every time. It must be clear at all times which version is installed in a test environment. This applies not only to the test object, but also to all of the software (i.e. the operating system, database management system, network protocols, etc). Changes in the components of the test environment (hardware and software, test object, procedures, etc) cannot be implemented unless with permission from the environment’s owner (in projects, often the test management).

Flexible

A test environment must be easy to adapt. This may conflict with the previous requirement. Which of the two requirements (manageable or flexible) takes precedence, depends on the aim of the test and the phase of the test process. For instance, adjustments may be necessary when analysing defects or implementing a new version of the software. It may also be necessary to create or eliminate specific connections with other systems. If this is done in a test environment of one project, which has no impact on anybody else, flexibility wins. In case of a shared environment (e.g. an end-to-end test environment), manageability is preferred. Other examples of possible changes are the system date and time, currency, calculation units and regional settings. Adjusting the system date and time may be necessary to make time jumps during testing. This is also called time travelling, making it possible for the system to be moved to the past or the future. It can be used, for instance, to run a system cycle of one year in just half a day. Changing regional settings is important when testing software that will be used in several countries.

Continuous

If there are disturbing situations in the test environment, one must try to continue testing as much as possible. The consequences of a failure must therefore be limited to a minimum. An important mitigating measure is making regular backups so that they can be restored if necessary. Furthermore, these secured initial situations can be used time and again for the test or to investigate a specific defect. Another mitigating measure is to create a fallback option for the test environment. The fallback option may consist of a second logical environment in addition to the existing test environment. The risk is that, if problems occur in the hardware, they affect both environments. Another option is therefore to set up a second physical environment. To limit the costs to some extent, the organisation may decide to combine the second environment with the fallback facility for the production environment.

Example 2 - When adapting an application that was used for annual contract renewals, it was necessary to perform tests on several dates and times (time travel). As such, easy modification of the system date was a requirement for the test environment. Furthermore it was necessary, due to the time travel, to create regular backups and restore them later. Not a complex combination of operations, but it did put a lot of work pressure on the administrators of the test environment. It was therefore decided to develop a menu screen containing the various operations and make it available to the testers. This relieved the administrators and allowed the testers to have better grip of their environment.

Factors determining the setup

Translating these requirements to the actual setup of a test environment varies for each test. For instance, the test environment for testing the screens in the system test may be different from that for testing security during the acceptance test. A large number of factors play a part in setting up the test environment. You will find a list of determining factors, with a summary explanation, below.

  • The test level for which the environment is intended - unit, system or acceptance test or possibly a combined test.
  • The test type for which the environment is intended - performance, usability, security or regression test?
  • Requirements made by the external organisations for the environment, e.g. supervisors or (local or central) authorities.
  • Requirements made for the test data to be used. Are they small or big volumes? What is the refresh rate?
  • Existing test environments in the organisation, if any. Can they be used? How can individual requirements be implemented?
  • Is there a budget for setting up test environments and which options are available?
  • Does the organisation have standards for setting up test environments?
  • The hardware and software architecture. Which development or production platform is being used? What are the options and which limitations exist, if any?
  • The manner in which system development is organised. The methods, techniques and phasing used for system development have an impact on the test environments in terms of procedures.
  • The type of system. Clearly the test environment has a strong relationship with the nature of the test object, e.g. batch, online, mainframe, PC application, custom or package.
  • The level of distributed processing. What extent of data communication exists? And in what form? Is the network or network programming part of the test object? Are decentralised test sites used? Are there any interfaces with external organisations?
  • Scope of the test. Should manual processes in e.g. input and output processing be tested as well?
  • The test environments of the programmer and tester must not be too distant in terms of geography. While communication resources like telephone and e-mail may respond to part of the communication requirement, frequent consultation between the various stakeholders will be necessary. An optimal location choice can save a lot of time and money.
  • Sometimes the use of test tools makes demands on the test environment in relation to e.g. security, data storage and communication resources.

Tips - The cube notation for test environments

A lot of characteristics must be recorded for test environments. Characteristics that are determinants for the identification of an environment, but also those about which an agreement has to be reached with other parties. The registration method for these characteristics partly determines the success of the various arrangements. When multiple test environments are involved, the clear and structured recording of the characteristics may be problematic. One way to do this is to work with the socalled cube notation. A number of characteristics are placed in each visible plane of the drawn cube. An example is shown in figure 1 - Cube notation of the various characteristics of a test environment.


Figure 1 : Cube notation of the various characteristics of a test environment

This makes everything clear at a glance. We recommend hanging this plate in the common test or project space so that everyone can see the  applicable arrangements at any time.